home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’96 / Booting Gallery / Booting Gallery (source) / Sources / Sprite Sources / GWorldUtils.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-06-22  |  998 b   |  52 lines  |  [TEXT/CWIE]

  1. #include "GWorldUtils.h"
  2.  
  3.  
  4. OSErr    NewLockedGWorld(GWorldPtr* gWorld,short pixDepth,Rect* bounds,CTabHandle ctTable,GDHandle device,long flags)
  5. {
  6.     OSErr        err = noErr;
  7.     
  8.     err = NewGWorld(gWorld,pixDepth,bounds,ctTable,device,flags);
  9.     if(err == noErr){
  10.         PixMapHandle        pm = GetGWorldPixMap(*gWorld);
  11.         
  12.         if(!LockPixels(pm)){
  13.             err = paramErr;
  14.         }
  15.     }
  16.     
  17.     return err;
  18.  
  19. }
  20.  
  21. OSErr    NewCIconGWorld(short inID,GWorldPtr* outGWorld,RgnHandle* outMask)
  22. {
  23.     OSErr            err = noErr;
  24.     CIconHandle        cIcon = GetCIcon(inID);
  25.     GWorldPtr        saveGWorld;
  26.     GDHandle        saveGD;
  27.     
  28.     GetGWorld(&saveGWorld,&saveGD);
  29.     
  30.     if(cIcon == NULL){
  31.         err = paramErr;
  32.     }else{
  33.         Rect        bounds = cIcon[0]->iconPMap.bounds;
  34.         
  35.         err = NewLockedGWorld(outGWorld,0,&bounds,NULL,NULL,0);
  36.         if(err == noErr){
  37.             SetGWorld(*outGWorld,NULL);
  38.             PlotCIcon(&bounds,cIcon);
  39.             *outMask = NewRgn();
  40.             HLock((Handle)cIcon);
  41.             
  42.             BitMapToRegion(*outMask,&(cIcon[0]->iconMask));
  43.         }
  44.         
  45.         DisposeCIcon(cIcon);
  46.     }
  47.  
  48.     SetGWorld(saveGWorld,saveGD);
  49.  
  50.     return err;
  51. }
  52.